package com.zp.self.module.level_4_算法练习.数学.数学推理;

/**
 * @author By ZengPeng
 */
public class 力扣_168_Excel表列名称 {
    //测试
    public static void main(String[] args) {
//        int yu = 1;
//        System.out.println((char)(--yu+'A'));
        System.out.println(new 力扣_168_Excel表列名称().convertToTitle(1));
        System.out.println(new 力扣_168_Excel表列名称().convertToTitle(28));
        System.out.println(new 力扣_168_Excel表列名称().convertToTitle(701));
        System.out.println(new 力扣_168_Excel表列名称().convertToTitle(2147483647));
        System.out.println(new 力扣_168_Excel表列名称().convertToTitle(52));
    }

    /**
     * 题目：给你一个整数 columnNumber ，返回它在 Excel 表中相对应的列名称。
     * A -> 1
     * B -> 2
     * C -> 3
     * ...
     * Z -> 26  A0
     * AA -> 27
     * AB -> 28
     * ...
     *
     * 分析：
     *      ×1.此题变相转换为：转换为26进制得了,不对啊26 --> A0  ,26=z  所有好像行不通
     *      √2.除法 取商  余数
     *
     * 边界值注意：
     *      1.
     **/
    public String convertToTitle(int columnNumber) {
        StringBuilder sb= new StringBuilder();
        while (columnNumber>26){
            int yu = columnNumber % 26;
            if(yu==0){
                sb.append('Z');columnNumber -=26;
            } else sb.append((char)(--yu+'A'));
            columnNumber = columnNumber/26;
        }
        sb.append((char)(--columnNumber+'A'));
        return  sb.reverse().toString();
    }
}
